feat: niveau 3 — la division avec reste (specs §12 + implémentation) - #71
Merged
Conversation
Spécifie l'évolution naturelle après la complétion de l'image mystère des divisions : l'encadrement par les multiples (45 ÷ 7 = 6, reste 3), aligné sur les attendus CE2/CM1. Statut : spécifié, non implémenté. Renumérote les chapitres suivants (profils 13, évolutions 14, refs 15). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
|
Preview supprimée (PR fermée). Les URLs ne sont plus accessibles. |
Troisième porte de retrieval sur le réseau multiplicatif : 64 zones (diviseur, quotient) en Leitner, reste tiré au sort à chaque révision (canonique à l'intro pour coller aux MP3), déblocage sur les 8 badges « Divisions par N », saisie en deux temps (quotient puis reste) avec feedback ciblé par étape, 3e image mystère, badges dédiés (🥉 / ÷Nʳ / 👑), entretien × et ÷ intégré à la séance unique (cap 6), dashboard parent à 3 onglets, faits difficiles unifiés, i18n fr/en, clés TTS (génération des MP3 via le workflow après merge), changelog, et specs passées en « implémenté ». 4 nouveaux fichiers de tests (composer, badges, daily, parcours intégration avec saisie deux temps) — 251 tests verts. Vérifié en vrai navigateur (Playwright) : intro de zone, deux temps, feedback, séance mixte avec entretien des divisions. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Nouveau profil seed niveau 3 (divisions en boîte 5 + badges « Divisions par N » — sans re-pousser table-2 déjà présent dans le profil d'exemple, le comptage de déblocage étant strict à 8) et séquence de capture : intro de zone (attente de la rangée du reste révélée), saisie en deux temps (étape « Il reste combien ? »), 3e image mystère, dashboard à trois onglets. Le guide est régénéré par le workflow de déploiement ; validé en local sur les deux langues. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… encre douce Le corail se lisait comme un signal d'erreur dans la formule (il reste réservé aux points du reste dans la grille), et l'espace typographique du ::before était illisible à 0.45em — remplacé par des marges explicites. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Quoi
Trois commits :
public/specs/index.html(renumérotation : Multi-profils → §13, Évolutions → §14, Références → §15 ; renvois §4.2/§7.1/§9 ; v1.4).Le niveau 3 en bref
Une fois les 8 badges « Divisions par N » acquis, la séance du jour devient la division avec reste (« 45 ÷ 7 = 6, reste 3 ») — le geste d'encadrement par les multiples, attendu fin CE2 / CM1, troisième porte de retrieval sur le même réseau multiplicatif. Invisible avant déblocage.
Implémentation
RemainderFact= une zone (diviseur, quotient) — 64 entrées Leitner en bijection avec la grille 8×8. Le reste est tiré au sort à chaque révision (0..d−1, le cas 0 garde vivante la discrimination « ça tombe juste ») ; l'intro utilise un reste canonique déterministe (max(1, ⌊d/2⌋)) pour coller aux MP3 pré-générés.remainderComposer(gate per-zone : division exacte parente en boîte 4+, même assouplissement anti-deadlock que le niveau 2),dailyComposerrefactoré enassemble()commun avec entretien ×/÷ intégré (cap 6, régime de croisière ≈ 5 dus/jour), padding bonus rem → div → mult.isRemainderUnlocked(8 badges « Divisions par N », permanent) +activeLevel(profile)partagé ; carte de récap « Tu débloques la division avec reste ! ».remainderDots— la rangée corail « qui ne rentre pas »),RemainderStrategyHint(équation d'encadrement7 × ☐ ≤ 45), 3ᵉ image mystère (thème distinct des deux autres), grille Leitner parent, 3ᵉ onglet Progression + dashboard (descripteur de niveau unique + onglets entabs.map), faits difficiles unifiés ×/÷/reste.qr-*par dividende,intror-*par zone, invites statiques) dansgenerate-tts.mjs— les MP3 seront générés viagh workflow run generate-tts.ymlaprès merge (l'audio manquant est ignoré silencieusement en attendant).remainderFacts/remainderMysteryThemesur les profils existants, validation d'import.Vérification
tsc -b+ 251 tests vitest verts, dont 4 nouveaux fichiers (composer, badges, daily, parcours d'intégration complet avec saisie en deux temps)./simplify4 angles passée, fixes appliqués (helpersactiveLevel/remainderZoneBounds/itemDisplaypartagés, descripteur ParentDashboard, dédupgetFactKey).Après merge
Guide utilisateur : section « Niveau 3 » ajoutée (fr/en) dans
generate-user-guide.mjs— le guide est régénéré automatiquement par le workflow de déploiement, validé en local sur les deux langues.gh workflow run generate-tts.ymlpour générer les ~480 MP3/langue du niveau 3.🤖 Generated with Claude Code